#include"SA.h"

int main(){
	data_t MA[2*M][2*K];
	data_t MB[2*K][2*N];
	data_t MC[2*M][2*N];
	data_t MC_HLS[2*M][2*N];

	//
	for(int i=0;i<2*M;i++)
		for(int j=0;j<2*K;j++){
			MA[i][j]=i+j;
		}
	for(int i=0;i<2*K;i++)
		for(int j=0;j<2*N;j++){
			MB[i][j]=i-j;
		}
	//
	cout<<"C RESULT:"<<endl;
	for(int i=0;i<2*M;i++){
		for(int j=0;j<2*N;j++)
		{
			data_t tmp=0;
			for(int k=0;k<2*K;k++)
				tmp+=MA[i][k]*MB[k][j];
			MC[i][j]=tmp;
			cout<<MC[i][j]<<"   ,   ";
		}
	    cout<<endl;
    }
	cout<<"HLS RESULT:"<<endl;
	//Compute_wrapper(MA,MB,MC_HLS,1);
	Top((volatile data_t*)MA,(volatile data_t*)MB,(volatile data_t*)MC_HLS,8,8,32);
	for(int i=0;i<2*M;i++){
		for(int j=0;j<2*N;j++)
			cout<<MC_HLS[i][j]<<"   ,   ";
	    cout<<endl;
	}
	return 0;
}
